@风铃
2年前 提问
1个回答

目录遍历漏洞的防御措施有哪些

安全侠
2年前

目录遍历是指在访问储存在web根目录文件夹之外的文件和目录。目录遍历漏洞的防御措施从以下三个方面考虑:

  • 系统开发阶段的防御

    在系统开发阶段应充分考虑系统的安全性,对目录遍历漏洞来说,需对用户提交的内容进行严格的过滤,这里主要指过滤目录跳转符,字符截断符,dir命令等。

  • 系统运行阶段的防御

    系统运维人员需有强烈的安全意识,他们的一举一动都会影响用户的个人隐私信息安全。对系统运维人员来说,部署新的业务系统或者安装新的软件或应用后应通过web扫描工具积极查找系统是否存在目录遍历漏洞,尽可能不要在服务器上安装与业务不相关的第三方软件以避免引入目录遍历漏洞。除此之外,还应该合理配置web服务器(禁止目录浏览,分配好目录权限等)并积极关注所使用的各种软件和应用的版本发布情况,及时升级新的软件版本。

    不同web服务器禁止目录浏览方法有所不同。对IIS而言,如果不需要可执行的CGI,可以删除可执行虚拟目录或直接关闭目录浏览;如果确实需要可执行的虚拟目录,建议将可执行的虚拟目录单独放在一个分区。

    对于Apache而言,管理员需要修改配置文件,禁止浏览列出目录和文件列表,如可通过修改conf目录下的httpd.conf文件来禁止使用目录索引。以Apache 2.2.25版本为例,打开httpd.conf文件将“Options Indexes FollowSymLinks”中的“Indexes”删除,这样web目录下的所有目录都不再生成索引。

    为更好的保护系统安全,实际生产环境和测试开发环境应该隔离。在生产环境中的任何改动,都需要严格遵循变更管理流程,做到执行人、执行时间、执行对象和具体改动均记录在案,并有企业信息安全部门进行事前审核和事后审计。技术人员一般不要直接调试生产系统,可以在测试环境中调试完成后再更新生产系统,以避免调试过程中开启某些接口、更改某些配置或者保存某些调试信息造成安全隐患。如果非要在线调试生产系统,而且需要保存调试信息时,应避免将调试信息直接保存到服务器本地,同时调试完成后应第一时间删除相关调试信息并恢复系统配置。

  • 安全设备的防御

    进行目录遍历攻击时,攻击者基本都会使用目录跳转符,同时可能配合使用字符截断符,dir命令等。对专业的安全设备来说通过检测特定语法下的目录跳转符,字符截断符,以及与查看目录相关的命令即可识别各种目录遍历攻击。部署专业的安全设备不仅可以很好的保护业务系统自身的目录遍历漏洞,同时还能防御web服务器和服务器上其他非业务相关的第三方应用漏洞引发的目录遍历攻击。目前华三通信发布的SecPath IPS系列产品采用特有技术,能够智能有效的识别各种编码方式的目录遍历攻击。